package cn.virens.database.mysql.model.base;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Table;

import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.URLUtil;
import cn.virens.database.common.BaseModel;

@Table(name = "base_upload_file")
public class BaseUploadFile extends BaseModel implements Serializable {
	/**
	 * 文件编码
	 */
	private String code;

	/**
	 * 文件路径
	 */
	private String path;

	/**
	 * 文件名
	 */
	private String name;

	/**
	 * 文件大小
	 */
	private Long length;

	/**
	 * 文件格式
	 */
	@Column(name = "mime_type")
	private String mimeType;

	private static final long serialVersionUID = 1L;

	/**
	 * 获取文件编码
	 *
	 * @return code - 文件编码
	 */
	public String getCode() {
		return code;
	}

	/**
	 * 设置文件编码
	 *
	 * @param code 文件编码
	 */
	public void setCode(String code) {
		this.code = StrUtil.trim(code);
	}

	/**
	 * 获取文件路径
	 *
	 * @return path - 文件路径
	 */
	public String getPath() {
		return path;
	}

	/**
	 * 获取图片绝对路径
	 * 
	 * @param  rootPath 绝对路径
	 * @return
	 */
	public String getPath(String rootPath) {
		return rootPath + path;
	}

	/**
	 * 设置文件路径
	 *
	 * @param path 文件路径
	 */
	public void setPath(String path) {
		this.path = StrUtil.trim(path);
	}

	/**
	 * 获取文件名
	 *
	 * @return name - 文件名
	 */
	public String getName() {
		return name;
	}

	/**
	 * 设置文件名
	 *
	 * @param name 文件名
	 */
	public void setName(String name) {
		this.name = StrUtil.trim(name);
	}

	/**
	 * 获取文件大小
	 *
	 * @return length - 文件大小
	 */
	public Long getLength() {
		return length;
	}

	/**
	 * 设置文件大小
	 *
	 * @param length 文件大小
	 */
	public void setLength(Long length) {
		this.length = length;
	}

	/**
	 * 获取文件格式
	 *
	 * @return mime_type - 文件格式
	 */
	public String getMimeType() {
		return mimeType;
	}

	/**
	 * 设置文件格式
	 *
	 * @param mimeType 文件格式
	 */
	public void setMimeType(String mimeType) {
		this.mimeType = StrUtil.trim(mimeType);
	}

	public String contentType() {
		return StrUtil.emptyToDefault(mimeType, "application/octet-stream");
	}

	public String contentName() {
		return URLUtil.encode(name);
	}

	public String contentLength() {
		return Long.toString(length);
	}
}